Fox's Git Mirrors
docs/en/examples.md 633735d797cc5f5d48cb2e22e8fd7cd743930daf (633735d7) Text, 11.48 KB
Examples
Sample programs under T383838examples/ show how to use Reticulum-Go as a library.
They are starting points rather than production services.
Pair this page with the API reference.
Which Example to Open
┌─────────────────────────────────┬────────────────────────────────────────────────────────────────┐
│ Goal │ Start Here │
├─────────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ Smallest stack bring-up │ T383838examples/minimal │
│ Announce callbacks │ T383838examples/announce │
│ Encrypted link packets │ T383838examples/link │
│ Minimal resource send │ T383838examples/resources │
│ File list and download │ T383838examples/filetransfer │
│ Prove-all echo │ T383838examples/echo │
│ Page request client │ T383838examples/page-downloader │
│ Pages and files over Reticulum │ T383838reticulum-go pageserver or T383838examples/pageserver │
│ Browser WebSocket client │ T383838examples/wasm │
│ Python talking to the daemon │ T383838examples/control-client │
│ C / FFI smoke test │ T383838bindings/c/examples/smoke │
│ C librns page fetch │ T383838bindings/c/examples/page-fetch │
│ C librns pageserver │ T383838bindings/c/examples/pageserver │
│ Odin librns smoke │ T383838bindings/odin/examples/smoke │
│ Odin librns page fetch │ T383838bindings/odin/examples/page-fetch │
│ Odin librns pageserver │ T383838bindings/odin/examples/pageserver │
│ Zig librns smoke │ T383838bindings/zig/examples/smoke │
│ Zig librns page fetch │ T383838bindings/zig/examples/page-fetch │
│ Zig librns pageserver │ T383838bindings/zig/examples/pageserver │
│ C++ librns smoke │ T383838bindings/cpp/examples/smoke │
│ C++ librns page fetch │ T383838bindings/cpp/examples/page-fetch │
│ C++ librns pageserver │ T383838bindings/cpp/examples/pageserver │
│ Rust librns smoke │ T383838bindings/rust/examples/smoke │
│ Rust librns page fetch │ T383838bindings/rust/examples/page-fetch │
│ Rust librns pageserver │ T383838bindings/rust/examples/pageserver │
│ Python librns smoke │ T383838bindings/python/examples/smoke │
│ Python librns page fetch │ T383838bindings/python/examples/page-fetch │
│ Python librns pageserver │ T383838bindings/python/examples/pageserver │
│ Lua librns smoke │ T383838bindings/lua/examples/smoke │
│ Lua librns page fetch │ T383838bindings/lua/examples/page-fetch │
│ Lua librns pageserver │ T383838bindings/lua/examples/pageserver │
│ Swift librns smoke │ T383838bindings/swift/examples/smoke │
│ Swift librns page fetch │ T383838bindings/swift/examples/page-fetch │
│ Swift librns pageserver │ T383838bindings/swift/examples/pageserver │
│ Java librns smoke │ T383838bindings/java/examples/smoke │
│ Java librns page fetch │ T383838bindings/java/examples/page-fetch │
│ Java librns pageserver │ T383838bindings/java/examples/pageserver │
│ Kotlin librns smoke │ T383838bindings/kotlin/examples/smoke │
│ Kotlin librns page fetch │ T383838bindings/kotlin/examples/page-fetch │
│ Kotlin librns pageserver │ T383838bindings/kotlin/examples/pageserver │
│ Dart librns FFI smoke │ T383838bindings/dart/examples/smoke │
│ Odin librns bindings │ T383838bindings/odin │
│ Zig librns bindings │ T383838bindings/zig │
│ C++ librns bindings │ T383838bindings/cpp │
│ Rust librns bindings │ T383838bindings/rust │
│ Python librns bindings │ T383838bindings/python │
│ Lua librns bindings │ T383838bindings/lua │
│ Swift librns bindings │ T383838bindings/swift │
│ Java librns bindings │ T383838bindings/java │
│ Kotlin librns bindings │ T383838bindings/kotlin │
│ Dart librns FFI and Control API │ T383838bindings/dart │
Control API Client
Path: T383838examples/control-client/
Python T383838client.py for the localhost Control API.
T282828
enable_control_api = yes
rpc_key = <64 hex characters>
See Control API.
librns smoke
Path: T383838bindings/c/examples/smoke/
Minimal C program against T383838librns.so and T383838include/rns.h.
T282828
task build-librns
make -C bindings/c/examples/smoke
./bindings/c/examples/smoke/librns-smoke
See librns.
librns page fetch (C)
Path: T383838bindings/c/examples/page-fetch/
NomadNet / pageserver style page request over the C ABI. Opens a path, waits for an announce, establishes a link, and prints the T383838/page/... response.
T282828
task build-librns
make -C bindings/c/examples/page-fetch
./bindings/c/examples/page-fetch/librns-page-fetch \\
-c /path/to/config \\
92798ea245a0afcfa559348e42d628c6:/page/index.mu
Add a TCP or Backbone hub from directory.rns.recipes to the config.
Odin page fetch
Path: T383838bindings/odin/examples/page-fetch/
Same flow as the C page-fetch example, using the Odin wrappers in T383838bindings/odin.
T282828
task build-librns
make -C bindings/odin/examples/page-fetch
./bindings/odin/examples/page-fetch/odin-page-fetch \\
-c /path/to/config \\
92798ea245a0afcfa559348e42d628c6:/page/index.mu
librns pageserver (C)
Path: T383838bindings/c/examples/pageserver/
NomadNet-compatible T383838nomadnetwork.node destination that serves T383838/page/index.mu over librns request handlers.
T282828
task build-librns
make -C bindings/c/examples/pageserver
./bindings/c/examples/pageserver/librns-pageserver \\
-c /path/to/config
Prints T383838DEST_HASH=... on startup. Fetch with the C, Odin, Zig, or C++ page-fetch example.
Run helpers (Go is the default demo pageserver):
T282828
task example:pageserver
make -C examples/pageserver run
task example:pageserver:c
task example:pageserver:odin
task example:pageserver:zig
task example:pageserver:cpp
Odin pageserver
Path: T383838bindings/odin/examples/pageserver/
Same pageserver flow using the Odin bindings.
T282828
task build-librns
make -C bindings/odin/examples/pageserver
./bindings/odin/examples/pageserver/odin-pageserver \\
-c /path/to/config
Zig page fetch
Path: T383838bindings/zig/examples/page-fetch/
Same flow as the C page-fetch example, using the Zig wrappers in T383838bindings/zig.
T282828
task build-librns
make -C bindings/zig/examples/page-fetch
./bindings/zig/examples/page-fetch/zig-page-fetch \\
-c /path/to/config \\
92798ea245a0afcfa559348e42d628c6:/page/index.mu
Zig pageserver
Path: T383838bindings/zig/examples/pageserver/
Same pageserver flow using the Zig bindings.
T282828
task build-librns
make -C bindings/zig/examples/pageserver
./bindings/zig/examples/pageserver/zig-pageserver \\
-c /path/to/config
C++ smoke
Path: T383838bindings/cpp/examples/smoke/
Minimal C++17 lifecycle check against T383838librns.so via T383838bindings/cpp.
T282828
task build-librns
make -C bindings/cpp/examples/smoke
./bindings/cpp/examples/smoke/cpp-smoke
C++ page fetch
Path: T383838bindings/cpp/examples/page-fetch/
Same flow as the C page-fetch example, using the C++ wrappers in T383838bindings/cpp.
T282828
task build-librns
make -C bindings/cpp/examples/page-fetch
./bindings/cpp/examples/page-fetch/cpp-page-fetch \\
-c /path/to/config \\
92798ea245a0afcfa559348e42d628c6:/page/index.mu
C++ pageserver
Path: T383838bindings/cpp/examples/pageserver/
Same pageserver flow using the C++ bindings.
T282828
task build-librns
make -C bindings/cpp/examples/pageserver
./bindings/cpp/examples/pageserver/cpp-pageserver \\
-c /path/to/config
Rust / Python / Lua / Swift / Java / Kotlin / Dart examples
Each language binding keeps demos under T383838bindings/<lang>/examples/.
T282828
task build-librns
make -C bindings/rust examples
make -C bindings/python examples
make -C bindings/lua examples
make -C bindings/swift examples
make -C bindings/java examples
make -C bindings/kotlin examples
make -C bindings/dart examples
Smoke programs print T383838*-smoke ok. Page-fetch and pageserver match the C demos for Rust, Python, Lua, Swift, Java, and Kotlin. Dart ships FFI smoke under T383838bindings/dart/examples/smoke (Control API sample remains under T383838bindings/dart/example/).
Odin librns bindings
Path: T383838bindings/odin/
Idiomatic Odin package over T383838librns.so. Requires Odin on T383838PATH and a built shared library.
T282828
task build-librns
task test-odin
Import with a collection rooted at T383838bindings/odin:
T282828
import rns "rns:rns"
Wrapped surface includes node lifecycle, identity, destination, path table, link send and request, and event poll. See librns.
Zig librns bindings
Path: T383838bindings/zig/
Idiomatic Zig package over T383838librns.so. Requires Zig 0.16.0 or later on T383838PATH and a built shared library.
T282828
task build-librns
task test-zig
Import as T383838@import("rns") from a T383838build.zig dependency on T383838bindings/zig. See librns.
C++ librns bindings
Path: T383838bindings/cpp/
Idiomatic C++17 RAII package over T383838librns.so. Requires CMake and a C++17 compiler, plus a built shared library.
T282828
task build-librns
task test-cpp
T282828
#include <rns/rns.hpp>
auto node_r = rns::Node::create("");
auto node = std::move(node_r).value();
node.start();
Wrapped surface matches the Odin and Zig bindings. See librns.
Dart bindings
Path: T383838bindings/dart/
Package rns_control includes librns FFI (T383838ffi.dart) and a Control API client.
T282828
task build-librns
task test-dart
task build-librns-targets -- linux android windows
T282828
dependencies:
rns_control:
path: /path/to/Reticulum-Go/bindings/dart
See librns Dart FFI and Control API.
Module Layout
Most examples keep their own T383838go.mod with a replace pointing at the repository root. T383838examples/wasm and T383838examples/pageserver also vendor dependencies.
Related Documents
Served by rngit 1.5.2 - Generated in 0.02s